#ifndef _GAMEOBJECT_H_INCLUDED_
#define _GAMEOBJECT_H_INCLUDED_

#include "game.h"

#include "ps2matrix4x4.h"
#include "ps2vector4.h"

class GameObject {
public:
    GameObject(Game* game);
    virtual ~GameObject(void);
    Game* GetGame() const;
    Vector4 GetPosition() const;
    void SetPosition(Vector4 val);
    Vector4 GetRotation() const;
    void SetRotation(Vector4 val);
    float GetScale() const;
    void SetScale(float val);
    virtual Matrix4x4 GetWorldMatrix();
    virtual void Draw(float timeDelta);
    virtual void Draw(Matrix4x4 matrix);
    virtual void Initialize();
    virtual void LoadContent();
    virtual void UnloadContent();
    virtual void Update(float timeDelta);
protected:
    Vector4 position;
    Vector4 rotation;
    float scale;
    Matrix4x4 worldMatrix;
    bool worldMatrixNeedsUpdate;
private:
    Game* game;
};

#endif